package cn.wtg.kotlindemo.testRxjava3

import io.reactivex.rxjava3.core.Observer
import io.reactivex.rxjava3.disposables.Disposable

/**
 * author: wtg  2019/4/24 0024
 * 标准的数据格式
 * desc: 对数据处理封装，可以根据自己的需具体业务和数据标准来定制
 * 只需把[HttpResult]替换成自己定义的数据格式基类就可以了
 */
abstract class BaseObserver<T> : Observer<HttpResult<T>> {
    override fun onNext(httpResult: HttpResult<T>) {
        if (httpResult.weatherinfo == null){
            onError(Throwable("数据为空"))
        }else{
            onSuccess(httpResult)
        }
    }

    override fun onComplete() {}
    override fun onError(throwable: Throwable) {
        onFinish()
    }

    override fun onSubscribe(d: Disposable) {

    }

    /**
     * 完成操作(操作成功或者失败都要调用)，用于统一的操作比如：关闭加载框，停止下拉刷新动画
     */
    open fun onFinish() {}

    /**
     * 成功的回调
     *
     * @param data 数据
     */
    abstract fun onSuccess(data: HttpResult<T>?)

}